﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cofe.Data;

namespace Cofe.Core.Property
{
    public interface IPropertyCacheFactory : ICofeService
    {
        /// <summary>
        /// Create a property cache based on the path.
        /// </summary>
        /// <param name="pathType">ParsePath or Guid</param>
        /// <param name="path"></param>
        /// <returns></returns>
        IPropertyCache CreatePropertyCache(ParsableType pathType, string path);

        IPropertyCache CreatePropertyCache();

        IPropertyCache CreatePropertyCache(IPropertyCache[] propertyCaches);

        /// <summary>
        /// Return which parsable type is supported.
        /// </summary>
        ParsableType SupportedParsableType { get; }
    }

    public interface IPropertyCacheFactory2 : IPropertyCacheFactory
    {
        IPropertyCache CreatePropertyCache(DatabaseEntry dbEntry);
    }
}
